<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>

	<body>
		<script type="text/javascript">
			//1.Date()与new Date()的区别
			/**
			 * Date()直接返回当前时间字符串,不管参数是number还是任何string.以普通函数的形式来调用
			 * 而new Date()则是会根据参数来返回对应的值,无参数的时候,返回当前时间的字符串形式,
			 * 有参数的时候返回参数所对应时间的字符串。以构造函数的方式来调用，返回的是一个实例，继承了Date.prototype的属性和方法
			 */

			//2.var date =new Date("2016-05-31 08:00")与var date =new Date("2016/05/31 08:00")的区别
			/**
			 * 这两段代码都是获得字符中指定的日期,
			 * 其中前面代码能在Firefox、Chrome中就能运行，但是放在Safari就会报错，错误是NaN，意思是Not a Number,
			 * 后面的代码兼容性好，建议使用.
			 */

			//3.console.log( 0.1 + 0.2 )为什么会输出 0.30000000000000004
			/*
			 * 首先,能被计算机读懂的是二进制,而不是十进制,所以我们先把 0.1 和 0.2 转换成二进制看看,
			 * 0.1 => 0.0001 1001 1001 1001…(无限循环)
			 * 0.2 => 0.0011 0011 0011 0011…(无限循环)
			 * 双精度浮点数的小数部分最多支持 52 位,所以两者相加之后得到这么一串 0.0100110011001100110011001100110011001100110011001100 
			 * 因浮点数小数位的限制而截断的二进制数字,这时候,我们再把它转换为十进制,就成了 0.30000000000000004.
			 */

			//4.请解析以下代码为什么会输出1,2,3
			//						console.log("1");
			//						setTimeout(function() {
			//							console.log("3")
			//						}, 0);
			//						console.log("2");
			/*
			 * 因为JS终归是单线程产物,
			 * 但是对于浏览器来说JS的执行只不过是在浏览器众多线程中的一条,我们称之为JS引擎线程,
			 * 每个定时器语句都会加入到执行的队列中,但都是挂起状态,
			 * 而其他非定时器的语句则会一直优先执行
			 * 只有当主线程的其他非定时器任务做完后,才正式开启定时器.
			 */

			//5.请解释下面代码运行的结果
			//			var a = "one";
			//			if(a) {
			//				console.log(a == true);
			//			} else {
			//				console.log("Melon");
			//			}
			/*
			 * 因为当a作为判断条件时,会隐形转化为true,
			 * 所以能过判断为真,
			 * 当作为值进行比较时,不会进行任何转变,所以返回false.
			 */

			//6.请分析console.log(1 + - + + + - + 1)的结果为什么等于2
			/**
			 * 1  +  (a) => 2
			 * a = - (b) => 1
			 * b = + (c) => -1
			 * c = + (d) => -1
			 * d = + (e) => -1
			 * e = + (f) => -1
			 * f = - (g) => -1
			 * g = +  1  => 1
			 * 倒着看
			 */

			//7.Math.round、parseInt、Math.floor和Math.ceil的区别
			/*
			 * Math.round(四舍五入)
			 * parseInt(返回舍去参数的小数部分后的整数)
			 * Math.floor(返回小于等于参数的最大整数)
			 * Math.ceil(返回大于等于参数的最小整数)
			 */

			//8.计算出计算机从一加到一百万所用的时间
			//提示，获取当前的时间戳    (new Date()).getTime()
			/*
			 * var d = new Date();
			 * var start_time = d.getTime();//开始的时间
			 * var sum = 0;
			 * for(var i = 0; i < 1000000; i++) {
			 *  	sum += i;
			 * }
			 * var end_time = d.getTime();//结束的时间
			 * console.log("计算用的总时间为:" + ((start_time - end_time) / 1000) + "秒");
			 */

			//9.输出从小到大排序好的五个不重复的随机整数,范围[10-23)
			var arr = new Array();
			for(var i = 0; i < 5; i++) {
				var cur_index = Math.floor(Math.random() * 13 + 10); //随机数
				var is_repect = false; //检测重复按钮,false为不存在,true为已存在
				for(var j = 0; j < arr.length; j++) {
					if(cur_index == arr[j]) {
						is_repect = true;
						break;
					}
				}
				if(!is_repect) { //判断有没有重复
					arr.push(cur_index);
				} else {
					i--;
				}
				arr.push()
			}
			for(var k = 0; k < arr.length; k++) {
				for(var d = (k + 1); d < arr.length; d++) {
					if(arr[k] > arr[d]) {
						var tmp = arr[d];
						arr[d] = arr[k];
						arr[k] = tmp;
					}
				}
			}
			console.log(arr);
			

			//10.实现一个必须大于当前时间的倒计时(X天X时X分X秒)
			function daojishi(targetTime) {
				var date = new Date();
				var curTime = date.getTime() / 1000;
				var daojiTime = targetTime - curTime;
				var day, hour, min, second;
				if(daojiTime <= 0) {
					alert("请输入未来的时间");
					return;
				} else {
					day = parseInt(daojiTime / 86400);
					hour = parseInt(daojiTime % 86400 / 3600);
					min = parseInt(daojiTime % 86400 % 3600 / 60);
					second = parseInt(daojiTime % 86400 % 3600 % 60);
				}
				document.body.innerHTML = "";
				document.write(day + "天" + hour + "时" + min + "分" + second + "秒");
				setTimeout(function() {
					daojishi(targetTime);
				}, 1000)
			}

			daojishi(Date.parse("2017-6-1 0:0:0") / 1000);
		</script>
	</body>

</html>